leetcode 413. Arithmetic Slices 等差数列划分
全部标签目录1.题目2.题解C#解法一:分段匹配法C#解法二:回溯法C#解法三:动态规划1.题目给你一个字符串s和一个字符规律p,请你来实现一个支持‘.’和‘*’的正则表达式匹配。1.‘.’匹配任意单个字符2.‘.’匹配任意单个字符所谓匹配,是要涵盖整个字符串s的,而不是部分字符串。示例1:输入:s="aa",p="a"输出:false解释:"a"无法匹配"aa"整个字符串。示例2:输入:s="aa",p="a*"输出:true解释:因为'*'代表可以匹配零个或多个前面的那一个元素,在这里前面的元素就是'a'。因此,字符串"aa"可被视为'a'重复了一次。示例3:输入:s="ab",p=".*"输出:
目录一.反转链表思路一反转指针反向:思路二头插法:二.链表的中间节点:三.合并两个有序数组: 思路一:从头开始,取两个链表中小的那个尾插到新链表。定义指针head,tail指向空,代表新链表的头结点。思路二:创建一个空的头指针(哨兵位),优化代码 : 四.环形链表①: 五.环形链表②:分享几个链表经典问题给大家,有不足的地方欢迎指出~感谢支持 づ♡ど 一.反转链表题目: 思路一反转指针反向:设置三个指针变量n1,n2,n3;分别指向NULL,第一个节点,第二个节点。将第n2的next指向n1,n1给n2,n2给n3,然后n3指向下一个节点,当n3=NULL是就不用在移动了,总的循环终止条件是
LeetCode454四数相加Ⅱ题目链接:四数相加Ⅱ文章链接:四数相加Ⅱ视频链接:四数相加Ⅱ思路因为C++还在学习中,还没到set和map这里,所以就先看视频了。不过这题肯定有暴力的解法,就是用四个for循环遍历所有的情况,用count记录,然后count++,最终返回count即可,但时间复杂度是n的四次方,不太建议这么做。--------------------------------------------------------以下是看完视频总结的思路--------------------------------------------------------大体的思路是这样的,四个
目录一、今日心得感悟 1、数组从小到大排序①冒泡法--时间复杂度:O(nlogn)②使用排序函数qsort--时间复杂度:O(nlogn) ③两端->中间(双指针法) --时间复杂度:O(n)④归并排序(双指针法)--时间复杂度:O(n) 2、二维数组的访问及动态分配 3、时间复杂度 4、滑动窗口二、题目977.有序数组的平方 题目链接 想法 代码实现(未看视频/题解) 遇到的问题209.长度最小的子数组 题目链接 想法 代码实现(未看视频/题解)
吾心信其可行,则移山填海之难,终有成功之日。 --孙中山目录🍉一.删除链表的倒数N个结点🌻1.双指针🍁2.求链表的长度🌸二.删除链表的中间的结点🍉一.删除链表的倒数N个结点给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。示例1:输入:head=[1,2,3,4,5],n=2输出:[1,2,3,5]示例2:输入:head=[1],n=1输出:[]示例3:输入:head=[1,2],n=1输出:[1]做题链接🌻1.双指针这题我们同样使用双指针的方法,我们先定义一个fast指针和slow指针,它们都指向head。第一步:先判断fast为不为空,不为空,n就
前言 在[C/C++]排序算法快速排序(递归与非递归)一文中,对于快速排序的单趟排序一共讲了三种方法:hoare、挖坑法、双指针法 ,这三种方法实现的快速排序虽然在一般情况下效率很高,但是如果待排序数据存在大量重复数据,那这几种方法的效率就很低,而为了解决快速排序在这样特殊情况下效率低下的问题, 三路划分就可以完美解决三路划分思想: 对于上述三种方法,其本质都是选定数组开头元素作特定值,让小的数据放左边,大的数据放右边。而三路划分顾名思义就是通过处理将数据分为三个部分[小于特定值的部分 等于特定值的部分 大于特定值的部分],这样划分好后,只需要对小于特定值的部分和
29.两数相除给你两个整数,被除数dividend和除数divisor。将两数相除,要求不使用乘法、除法和取余运算。整数除法应该向零截断,也就是截去(truncate)其小数部分。例如,8.345将被截断为8,-2.7335将被截断至-2。返回被除数dividend除以除数divisor得到的商。注意:假设我们的环境只能存储32位有符号整数,其数值范围是[−231,231−1][−2^{31},2^{31}−1][−231,231−1]。本题中,如果商严格大于231−12^{31}−1231−1,则返回231−12^{31}−1231−1;如果商严格小于−231-2^{31}−231,则返回−
期末考试临近,每天复习一点知识,还是可以复习完的,加油前言我后来才知道这是力扣上的一道题,我当时写他的时候名字叫找到单身狗,即使那个只出现了一次的数字题目136.只出现一次的数字给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。题目所谓单身狗问题翻译成数学问题就是在已知的一串数字,有一个数字只出现一次,其余的出现两次,现在你要找到是哪个数是单身狗解析一.一条单身狗我们要用到按位操作符首先异或表示当两个数的二进制表示,进行异或运算时,当前位的两个二进制
目录💡题目描述💡双指针解法💡单调栈解法💡题目描述给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。提示:n==height.length10💡双指针解法思路:假设每个宽度为1的柱子那里有一个高度未知的宽度为1的水桶,这个水桶能接的水就是当前柱子所处位置能留下的雨水,而水桶的左边木板的高度取决于当前柱子左边所有的柱子中最高的那个柱子的高度,水桶右边木板的高度取决于当前柱子右边所有的柱子中最高的柱子的高度,而水桶左右木板中较小的那个木板的高度减去当前柱子的高度就是当前水桶能接到的水,也就是当前位置留下的雨水。classSolution{public:
518.零钱兑换II给定不同面额的硬币和一个总金额。写出函数来计算可以凑成总金额的硬币组合数。假设每一种面额的硬币有无限个。示例1:输入:amount=5,coins=[1,2,5]输出:4解释:有四种方式可以凑成总金额:5=55=2+2+15=2+1+1+15=1+1+1+1+1示例2:输入:amount=3,coins=[2]输出:0解释:只用面额2的硬币不能凑成总金额3。示例3:输入:amount=10,coins=[10]输出:1注意,你可以假设:01硬币种类不超过500种结果符合32位符号整数思路这是一道典型的背包问题,一看到钱币数量不限,就知道这是一个完全背包。对完全背包还不了解的